//数据变化触发dep(依赖)发送通知时,watcher更新对应视图;自身实例化的时候往dep对象的subs数组中添加自己。
class Watcher {
  constructor (vm, key, cb) {
    this.vm = vm
    this.key = key //data中的属性名称
    this.cb = cb //回调函数负责更新视图
    Dep.target = this //将watcher实例对象挂在Dep类的静态属性上
    this.oldValue = vm[key] //触发get方法,get方法中会调用addSub
    Dep.target = null
  }
  //当数据发生变化的时候更新视图
  update () {
    let newValue = this.vm[this.key]
    if (this.oldValue === newValue) { return }
    this.cb(newValue)
  }
}